package com.huike;

import io.jsonwebtoken.*;
import org.jetbrains.annotations.TestOnly;

import java.util.Date;

public class Jwt {

    static String signature = "itheima"; //秘钥

    public static void main(String[] args) {

        //使用JWT自带的构造器构造一个jwt
        JwtBuilder builder = Jwts.builder();
        String token = builder.
                //封装header属性
                        setHeaderParam("typ", "JWT").
                        setHeaderParam("alg", "HS256")
                //封装payload里的信息,使用claim方法
                .claim("username", "zhangsan")
                .claim("name", "张三")
                .claim("age", 18)
                .claim("sex", "男")
                //在payload中设置一个超时时间 秒 分 时
                .setExpiration(new Date(System.currentTimeMillis() + Long.valueOf(1000 * 60 * 60)))
                .setId("123123123123")
                //构造signature部分
                .signWith(SignatureAlgorithm.HS256, signature)
                //构造我们的签名,调用compact方法
                .compact();
        System.out.println(token);
        System.out.println("======================解密===================================");
        JwtParser parser = Jwts.parser();
        Jws<Claims> claimsJwt = parser.setSigningKey(signature).parseClaimsJws(token);
        Claims body = claimsJwt.getBody();
        //获取name
        System.out.println(body.get("name"));
        //获取性别
        System.out.println(body.get("sex"));
        //获取用户名
        System.out.println(body.get("username"));
        //获取姓名
        System.out.println("name");
        //获取id
        System.out.println(body.getId());
        //获取有效期截止期
        System.out.println(body.getSubject());
        System.out.println(body.getExpiration());
    }
}